/*
package com.yuwenchao.superafflatus.utils;


import com.sun.istack.internal.NotNull;
import org.apache.commons.lang3.StringUtils;

import java.util.Arrays;
import java.util.List;

*/
/**
 * @author chaooGG
 * @version 1.0
 * @date 2021/8/2 17:26
 *//*

public class RomaTransitionNum {

    */
/**
     * 罗马列表
     *//*

    private final static List<String> ROMA_LIST = Arrays.asList("M","D","C","L","X","V","I");
    */
/**
     * 罗马数字对应阿拉伯数字列表
     *//*

    private final static List<Integer> NUM_LIST = Arrays.asList(1000,500,100,50,10,5,1);

    */
/**
     * 前一个罗马数字
     *//*

    private String preRoma;
    */
/**
     *当前罗马数字
     *//*

    private String curRoma;
    */
/**
     *阿拉伯数字总和
     *//*

    private int countNum;
    */
/**
     *当前阿拉伯数字总和
     *//*

    private int curNum;

    */
/**
     * 初始化全局参数
     *//*

    private void init(){
        this.preRoma = "";
        this.curRoma = "";
        this.countNum = 0;
        this.curNum = 0;
    }

    */
/**
     * 执行方法入口
     * @param romaStr 罗马字符串
     * @return int 返回转换完成的阿拉伯数字
     *//*

    public int romaToNum(String romaStr){
        if(StringUtils.isNotEmpty(romaStr)){
            init();
            for (int i = 0; i < romaStr.length(); i++) {
                execute(String.valueOf(romaStr.charAt(i)));
            }
            // 处理最后的一段相同的罗马字母，否则会丢失
            countNum += curNum;
        }
        return countNum;
    }
    //启动方法
    public static void main(String[] args) {
        //3999   Ⅲ
        String romaString = "MMMCMXCIX";
       // String romaString = "IV";
        System.out.println(new RomaTransitionNum().romaToNum(romaString));
    }

    */
/**
     * 执行方法，核心代码
     * @param roma  罗马字母
     *//*

    private void execute(String roma){
        if(StringUtils.isNotEmpty(roma)){
            curRoma = roma;
            if(StringUtils.isEmpty(preRoma) || curRoma.equals(preRoma)){
                // 如果当前字符已前一个字符相同，或者前一个字符为空（代表当前为第一个字符），则当前数字相加
                curNum += getCurRomaNum(curRoma);
            }else{
                //当前字符与前一个字符不相同，则需要比较分位计算
                if(ROMA_LIST.indexOf(curRoma) > ROMA_LIST.indexOf(preRoma)){
                    //当前字符位数小于前一个字符位数，则直接相加，
                    countNum += curNum;
                    //并重置当前数字为当前字符代表数字
                    curNum = getCurRomaNum(curRoma);
                }else{
                    //否则，进行相减操作，
                    curNum = getCurRomaNum(curRoma) - curNum;
                    //之后再计算和，
                    countNum += curNum;
                    //最后将当前数字置空
                    curNum = 0;
                }
            }
            preRoma = curRoma;
        }
    }

    */
/**
     * 获取当前罗马数字对应的阿拉伯数字
     * @param roma 罗马数字
     * @return int 阿拉伯数字
     *//*

    private int getCurRomaNum(@NotNull String roma){
        return NUM_LIST.get(ROMA_LIST.indexOf(roma));
    }




}
*/
